// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

suite("test_sql_depth") {
    def tableName = "tb_test_sql_depth"
    sql "DROP TABLE IF EXISTS ${tableName}"
    sql """
        CREATE TABLE ${tableName} (
        `k1` int NULL,
        `k2` int NULL,
        `k3` bigint NULL,
        `k4` varchar(20) NULL
        ) ENGINE=OLAP
        DUPLICATE KEY(`k1`,`k2`,`k3`,`k4`)
        DISTRIBUTED BY HASH(`k1`) BUCKETS 1
        PROPERTIES("replication_num" = "1");
        """
    sql "insert into ${tableName} values(1,2,3,'4'),(5,6,7,'8')"

    // set a large number to prevent rewrite OR to IN predicate
    sql "set rewrite_or_to_in_predicate_threshold=1000;"

    // try a SQL with too large tree depth
    try {
        sql "select * from ${tableName} where k1=1 OR k1=2 OR k1=3 OR k1=4 OR k1=5 OR k1=6 OR k1=7 OR k1=8 OR k1=9 OR k1=10 OR k1=11 OR k1=12 OR k1=13 OR k1=14 OR k1=15 OR k1=16 OR k1=17 OR k1=18 OR k1=19 OR k1=20 OR k1=21 OR k1=22 OR k1=23 OR k1=24 OR k1=25 OR k1=26 OR k1=27 OR k1=28 OR k1=29 OR k1=30 OR k1=31 OR k1=32 OR k1=33 OR k1=34 OR k1=35 OR k1=36 OR k1=37 OR k1=38 OR k1=39 OR k1=40 OR k1=41 OR k1=42 OR k1=43 OR k1=44 OR k1=45 OR k1=46 OR k1=47 OR k1=48 OR k1=49 OR k1=50 OR k1=51 OR k1=52 OR k1=53 OR k1=54 OR k1=55 OR k1=56 OR k1=57 OR k1=58 OR k1=59 OR k1=60 OR k1=61 OR k1=62 OR k1=63 OR k1=64 OR k1=65 OR k1=66 OR k1=67 OR k1=68 OR k1=69 OR k1=70 OR k1=71 OR k1=72 OR k1=73 OR k1=74 OR k1=75 OR k1=76 OR k1=77 OR k1=78 OR k1=79 OR k1=80 OR k1=81 OR k1=82 OR k1=83 OR k1=84 OR k1=85 OR k1=86 OR k1=87 OR k1=88 OR k1=89 OR k1=90 OR k1=91 OR k1=92 OR k1=93 OR k1=94 OR k1=95 OR k1=96 OR k1=97 OR k1=98 OR k1=99 OR k1=100 OR k1=101 OR k1=102 OR k1=103 OR k1=104 OR k1=105 OR k1=106 OR k1=107 OR k1=108 OR k1=109 OR k1=110 OR k1=111 OR k1=112 OR k1=113 OR k1=114 OR k1=115 OR k1=116 OR k1=117 OR k1=118 OR k1=119 OR k1=120 OR k1=121 OR k1=122 OR k1=123 OR k1=124 OR k1=125 OR k1=126 OR k1=127 OR k1=128 OR k1=129 OR k1=130 OR k1=131 OR k1=132 OR k1=133 OR k1=134 OR k1=135 OR k1=136 OR k1=137 OR k1=138 OR k1=139 OR k1=140 OR k1=141 OR k1=142 OR k1=143 OR k1=144 OR k1=145 OR k1=146 OR k1=147 OR k1=148 OR k1=149 OR k1=150 OR k1=151 OR k1=152 OR k1=153 OR k1=154 OR k1=155 OR k1=156 OR k1=157 OR k1=158 OR k1=159 OR k1=160 OR k1=161 OR k1=162 OR k1=163 OR k1=164 OR k1=165 OR k1=166 OR k1=167 OR k1=168 OR k1=169 OR k1=170 OR k1=171 OR k1=172 OR k1=173 OR k1=174 OR k1=175 OR k1=176 OR k1=177 OR k1=178 OR k1=179 OR k1=180 OR k1=181 OR k1=182 OR k1=183 OR k1=184 OR k1=185 OR k1=186 OR k1=187 OR k1=188 OR k1=189 OR k1=190 OR k1=191 OR k1=192 OR k1=193 OR k1=194 OR k1=195 OR k1=196 OR k1=197 OR k1=198 OR k1=199 OR k1=200 OR k1=201 OR k1=202 OR k1=203 OR k1=204 OR k1=205 OR k1=206 OR k1=207 OR k1=208 OR k1=209 OR k1=210 OR k1=211 OR k1=212 OR k1=213 OR k1=214 OR k1=215 OR k1=216 OR k1=217 OR k1=218 OR k1=219 OR k1=220 OR k1=221 OR k1=222 OR k1=223 OR k1=224 OR k1=225 OR k1=226 OR k1=227 OR k1=228 OR k1=229 OR k1=230 OR k1=231 OR k1=232 OR k1=233 OR k1=234 OR k1=235 OR k1=236 OR k1=237 OR k1=238 OR k1=239 OR k1=240 OR k1=241 OR k1=242 OR k1=243 OR k1=244 OR k1=245 OR k1=246 OR k1=247 OR k1=248 OR k1=249 OR k1=250 OR k1=251 OR k1=252 OR k1=253 OR k1=254 OR k1=255 OR k1=256 OR k1=257 OR k1=258 OR k1=259 OR k1=260 OR k1=261 OR k1=262 OR k1=263 OR k1=264 OR k1=265 OR k1=266 OR k1=267 OR k1=268 OR k1=269 OR k1=270 OR k1=271 OR k1=272 OR k1=273 OR k1=274 OR k1=275 OR k1=276 OR k1=277 OR k1=278 OR k1=279 OR k1=280 OR k1=281 OR k1=282 OR k1=283 OR k1=284 OR k1=285 OR k1=286 OR k1=287 OR k1=288 OR k1=289 OR k1=290 OR k1=291 OR k1=292 OR k1=293 OR k1=294 OR k1=295 OR k1=296 OR k1=297 OR k1=298 OR k1=299 OR k1=300 OR k1=301 OR k1=302 OR k1=303 OR k1=304 OR k1=305 OR k1=306 OR k1=307 OR k1=308 OR k1=309 OR k1=310 OR k1=311 OR k1=312 OR k1=313 OR k1=314 OR k1=315 OR k1=316 OR k1=317 OR k1=318 OR k1=319 OR k1=320 OR k1=321 OR k1=322 OR k1=323 OR k1=324 OR k1=325 OR k1=326 OR k1=327 OR k1=328 OR k1=329 OR k1=330 OR k1=331 OR k1=332 OR k1=333 OR k1=334 OR k1=335 OR k1=336 OR k1=337 OR k1=338 OR k1=339 OR k1=340 OR k1=341 OR k1=342 OR k1=343 OR k1=344 OR k1=345 OR k1=346 OR k1=347 OR k1=348 OR k1=349 OR k1=350 OR k1=351 OR k1=352 OR k1=353 OR k1=354 OR k1=355 OR k1=356 OR k1=357 OR k1=358 OR k1=359 OR k1=360 OR k1=361 OR k1=362 OR k1=363 OR k1=364 OR k1=365 OR k1=366 OR k1=367 OR k1=368 OR k1=369 OR k1=370 OR k1=371 OR k1=372 OR k1=373 OR k1=374 OR k1=375 OR k1=376 OR k1=377 OR k1=378 OR k1=379 OR k1=380 OR k1=381 OR k1=382 OR k1=383 OR k1=384 OR k1=385 OR k1=386 OR k1=387 OR k1=388 OR k1=389 OR k1=390 OR k1=391 OR k1=392 OR k1=393 OR k1=394 OR k1=395 OR k1=396 OR k1=397 OR k1=398 OR k1=399 OR k1=400 OR k1=401 OR k1=402 OR k1=403 OR k1=404 OR k1=405 OR k1=406 OR k1=407 OR k1=408 OR k1=409 OR k1=410 OR k1=411 OR k1=412 OR k1=413 OR k1=414 OR k1=415 OR k1=416 OR k1=417 OR k1=418 OR k1=419 OR k1=420 OR k1=421 OR k1=422 OR k1=423 OR k1=424 OR k1=425 OR k1=426 OR k1=427 OR k1=428 OR k1=429 OR k1=430 OR k1=431 OR k1=432 OR k1=433 OR k1=434 OR k1=435 OR k1=436 OR k1=437 OR k1=438 OR k1=439 OR k1=440 OR k1=441 OR k1=442 OR k1=443 OR k1=444 OR k1=445 OR k1=446 OR k1=447 OR k1=448 OR k1=449 OR k1=450 OR k1=451 OR k1=452 OR k1=453 OR k1=454 OR k1=455 OR k1=456 OR k1=457 OR k1=458 OR k1=459 OR k1=460 OR k1=461 OR k1=462 OR k1=463 OR k1=464 OR k1=465 OR k1=466 OR k1=467 OR k1=468 OR k1=469 OR k1=470 OR k1=471 OR k1=472 OR k1=473 OR k1=474 OR k1=475 OR k1=476 OR k1=477 OR k1=478 OR k1=479 OR k1=480 OR k1=481 OR k1=482 OR k1=483 OR k1=484 OR k1=485 OR k1=486 OR k1=487 OR k1=488 OR k1=489 OR k1=490 OR k1=491 OR k1=492 OR k1=493 OR k1=494 OR k1=495 OR k1=496 OR k1=497 OR k1=498 OR k1=499 OR k1=500 OR k1=501 OR k1=502 OR k1=503 OR k1=504 OR k1=505 OR k1=506 OR k1=507 OR k1=508 OR k1=509 OR k1=510 OR k1=511 OR k1=512 OR k1=513 OR k1=514 OR k1=515 OR k1=516 OR k1=517 OR k1=518 OR k1=519 OR k1=520 OR k1=521 OR k1=522 OR k1=523 OR k1=524 OR k1=525 OR k1=526 OR k1=527 OR k1=528 OR k1=529 OR k1=530 OR k1=531 OR k1=532 OR k1=533 OR k1=534 OR k1=535 OR k1=536 OR k1=537 OR k1=538 OR k1=539 OR k1=540 OR k1=541 OR k1=542 OR k1=543 OR k1=544 OR k1=545 OR k1=546 OR k1=547 OR k1=548 OR k1=549 OR k1=550 OR k1=551 OR k1=552 OR k1=553 OR k1=554 OR k1=555 OR k1=556 OR k1=557 OR k1=558 OR k1=559 OR k1=560 OR k1=561 OR k1=562 OR k1=563 OR k1=564 OR k1=565 OR k1=566 OR k1=567 OR k1=568 OR k1=569 OR k1=570 OR k1=571 OR k1=572 OR k1=573 OR k1=574 OR k1=575 OR k1=576 OR k1=577 OR k1=578 OR k1=579 OR k1=580 OR k1=581 OR k1=582 OR k1=583 OR k1=584 OR k1=585 OR k1=586 OR k1=587 OR k1=588 OR k1=589 OR k1=590 OR k1=591 OR k1=592 OR k1=593 OR k1=594 OR k1=595 OR k1=596 OR k1=597 OR k1=598 OR k1=599 OR k1=600 OR k1=601 OR k1=602 OR k1=603 OR k1=604 OR k1=605 OR k1=606 OR k1=607 OR k1=608 OR k1=609 OR k1=610 OR k1=611 OR k1=612 OR k1=613 OR k1=614 OR k1=615 OR k1=616 OR k1=617 OR k1=618 OR k1=619 OR k1=620 OR k1=621 OR k1=622 OR k1=623 OR k1=624 OR k1=625 OR k1=626 OR k1=627 OR k1=628 OR k1=629 OR k1=630 OR k1=631 OR k1=632 OR k1=633 OR k1=634 OR k1=635 OR k1=636 OR k1=637 OR k1=638 OR k1=639 OR k1=640 OR k1=641 OR k1=642 OR k1=643 OR k1=644 OR k1=645 OR k1=646 OR k1=647 OR k1=648 OR k1=649 OR k1=650 OR k1=651 OR k1=652 OR k1=653 OR k1=654 OR k1=655 OR k1=656 OR k1=657 OR k1=658 OR k1=659 OR k1=660 OR k1=661 OR k1=662 OR k1=663 OR k1=664 OR k1=665 OR k1=666 OR k1=667 OR k1=668 OR k1=669 OR k1=670 OR k1=671 OR k1=672 OR k1=673 OR k1=674 OR k1=675 OR k1=676 OR k1=677 OR k1=678 OR k1=679 OR k1=680 OR k1=681 OR k1=682 OR k1=683 OR k1=684 OR k1=685 OR k1=686 OR k1=687 OR k1=688 OR k1=689 OR k1=690 OR k1=691 OR k1=692 OR k1=693 OR k1=694 OR k1=695 OR k1=696 OR k1=697 OR k1=698 OR k1=699 OR k1=700 OR k1=701 OR k1=702 OR k1=703 OR k1=704 OR k1=705 OR k1=706 OR k1=707 OR k1=708 OR k1=709 OR k1=710 OR k1=711 OR k1=712 OR k1=713 OR k1=714 OR k1=715 OR k1=716 OR k1=717 OR k1=718 OR k1=719 OR k1=720 OR k1=721 OR k1=722 OR k1=723 OR k1=724 OR k1=725 OR k1=726 OR k1=727 OR k1=728 OR k1=729 OR k1=730 OR k1=731 OR k1=732 OR k1=733 OR k1=734 OR k1=735 OR k1=736 OR k1=737 OR k1=738 OR k1=739 OR k1=740 OR k1=741 OR k1=742 OR k1=743 OR k1=744 OR k1=745 OR k1=746 OR k1=747 OR k1=748 OR k1=749 OR k1=750 OR k1=751 OR k1=752 OR k1=753 OR k1=754 OR k1=755 OR k1=756 OR k1=757 OR k1=758 OR k1=759 OR k1=760 OR k1=761 OR k1=762 OR k1=763 OR k1=764 OR k1=765 OR k1=766 OR k1=767 OR k1=768 OR k1=769 OR k1=770 OR k1=771 OR k1=772 OR k1=773 OR k1=774 OR k1=775 OR k1=776 OR k1=777 OR k1=778 OR k1=779 OR k1=780 OR k1=781 OR k1=782 OR k1=783 OR k1=784 OR k1=785 OR k1=786 OR k1=787 OR k1=788 OR k1=789 OR k1=790 OR k1=791 OR k1=792 OR k1=793 OR k1=794 OR k1=795 OR k1=796 OR k1=797 OR k1=798 OR k1=799 OR k1=800 OR k1=801 OR k1=802 OR k1=803 OR k1=804 OR k1=805 OR k1=806 OR k1=807 OR k1=808 OR k1=809 OR k1=810 OR k1=811 OR k1=812 OR k1=813 OR k1=814 OR k1=815 OR k1=816 OR k1=817 OR k1=818 OR k1=819 OR k1=820 OR k1=821 OR k1=822 OR k1=823 OR k1=824 OR k1=825 OR k1=826 OR k1=827 OR k1=828 OR k1=829 OR k1=830 OR k1=831 OR k1=832 OR k1=833 OR k1=834 OR k1=835 OR k1=836 OR k1=837 OR k1=838 OR k1=839 OR k1=840 OR k1=841 OR k1=842 OR k1=843 OR k1=844 OR k1=845 OR k1=846 OR k1=847 OR k1=848 OR k1=849 OR k1=850 OR k1=851 OR k1=852 OR k1=853 OR k1=854 OR k1=855 OR k1=856 OR k1=857 OR k1=858 OR k1=859 OR k1=860 OR k1=861 OR k1=862 OR k1=863 OR k1=864 OR k1=865 OR k1=866 OR k1=867 OR k1=868 OR k1=869 OR k1=870 OR k1=871 OR k1=872 OR k1=873 OR k1=874 OR k1=875 OR k1=876 OR k1=877 OR k1=878 OR k1=879 OR k1=880 OR k1=881 OR k1=882 OR k1=883 OR k1=884 OR k1=885 OR k1=886 OR k1=887 OR k1=888 OR k1=889 OR k1=890 OR k1=891 OR k1=892 OR k1=893 OR k1=894 OR k1=895 OR k1=896 OR k1=897 OR k1=898 OR k1=899 OR k1=900 OR k1=901 OR k1=902 OR k1=903 OR k1=904 OR k1=905 OR k1=906 OR k1=907 OR k1=908 OR k1=909 OR k1=910 OR k1=911 OR k1=912 OR k1=913 OR k1=914 OR k1=915 OR k1=916 OR k1=917 OR k1=918 OR k1=919 OR k1=920 OR k1=921 OR k1=922 OR k1=923 OR k1=924 OR k1=925 OR k1=926 OR k1=927 OR k1=928 OR k1=929 OR k1=930 OR k1=931 OR k1=932 OR k1=933 OR k1=934 OR k1=935 OR k1=936 OR k1=937 OR k1=938 OR k1=939 OR k1=940 OR k1=941 OR k1=942 OR k1=943 OR k1=944 OR k1=945 OR k1=946 OR k1=947 OR k1=948 OR k1=949 OR k1=950 OR k1=951 OR k1=952 OR k1=953 OR k1=954 OR k1=955 OR k1=956 OR k1=957 OR k1=958 OR k1=959 OR k1=960 OR k1=961 OR k1=962 OR k1=963 OR k1=964 OR k1=965 OR k1=966 OR k1=967 OR k1=968 OR k1=969 OR k1=970 OR k1=971 OR k1=972 OR k1=973 OR k1=974 OR k1=975 OR k1=976 OR k1=977 OR k1=978 OR k1=979 OR k1=980 OR k1=981 OR k1=982 OR k1=983 OR k1=984 OR k1=985 OR k1=986 OR k1=987 OR k1=988 OR k1=989 OR k1=990 OR k1=991 OR k1=992 OR k1=993 OR k1=994 OR k1=995 OR k1=996 OR k1=997 OR k1=998 OR k1=999"
    } catch (Exception ex) {
        assert("${ex}".contains("The depth of the expression tree is too big"))
    }
}

